package cn.bby.query.base.ann;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author ben
 * @since 2025/4/15 00:13
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface CacheField {

    /**
     * 关联的数据库字段名列表，默认为空数组。
     * 示例：{"user_id", "order_id"}
     */
    String[] linkCol() default {};

    /**
     * 关联表名（对应QueryConfig中的relation配置），默认为主表。
     * 如果字段来自关联表，需指定对应的表名。
     */
    String table() default "";

    /**
     * 是否忽略该字段，默认为 false。
     * 若设为 true，则不会参与缓存构建或查询。
     */
    boolean ignore() default false;

    /**
     * 是否为复杂字段，默认为 false。
     * 复杂字段可能需要自定义序列化/反序列化逻辑。
     */
    boolean complex() default false;

    /**
     * 是否为常量字段，默认为 false。
     * 表示该字段在缓存中不会发生变化。
     */
    boolean constant() default false;
}